
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QKeyEvent>
#include<QTimer>



QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
//方向
typedef enum Direct
{
    DIR_LEFT,
    DIR_RIGHT,
    DIR_UP,
    DIR_DOWN
};

class Widget : public QWidget

{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

protected:
           //渲染绘图
    void paintEvent(QPaintEvent*event);
    //向上向下向左向右
    void addTop();
    void addDown();
    void addRight();
    void addLeft();
    void addNewReward();

    //按键处理
    void keyPressEvent(QKeyEvent*event);
    //删除
    void deleteLast();
    //判断游戏失败条件
    bool checkContact();

private:
    Ui::Widget *ui;
    //移动方向
    int moveFlag=DIR_UP;
    //游戏开始
    bool gameStart=false;
    //定时器
    QTimer*timer;
    int time=100;//超时时间
    //表示蛇
    QList<QRectF>snake;
    //奖品
    QRectF rewardNode;
    //一节蛇的宽高
    int nodeWidth=20;
    int nodeHeight=20;
protected slots:
    void timeout();


};

#endif // WIDGET_H
